package ui.window;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import control.GameControl;
import util.JDialogUtil;

@SuppressWarnings("serial")
public class JDialogSavePoint extends JDialog{

	private JLabel lbPoint = null;
	
	private JTextField txName = null;

	private JButton btnOk = null;
	
	private JLabel errorMsg = null;
	
	private GameControl gameControl = null;
	
	public JDialogSavePoint(JPanelGame panelGame, GameControl gameControl) {
		//将dialog主窗体设置panelGame
		this.add(panelGame);
		//获得游戏控制器
		this.gameControl = gameControl;
		//设置标题
		this.setTitle("保存记录");
		//设置大小
		this.setSize(256,128);
		//居中
		JDialogUtil.setDialogCenter(this);
		//设置不可改变大小
		this.setResizable(false);
		//设置布局
		this.setLayout(new BorderLayout());
		//初始化组件
		this.createCom();
		//初始化动作
		this.createAction();
		//设置模态
		this.setModal(true);
	}
	
	/**
	 * 显示窗口
	 */
	public void showWindow(int point) {
		this.lbPoint.setText("您的得分: " + point);
		this.errorMsg.setText("");
		this.txName.setText("");
		this.setVisible(true);
	}
	
	/**
	 * 创建事件监听
	 */
	private void createAction() {
		this.btnOk.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				//TODO 还可以加入其他文字验证
				String name = txName.getText();
				if(name.length() > 16 || name == null || "".equals(name)) {
					errorMsg.setText("请输入16位以内的名字");
				}else {
					setVisible(false);
					gameControl.savePoint(name);
				}
			}
		});
	}

	/**
	 * 初始化控件
	 */
	private void createCom() {
//北部面板
		//创建北部面板（流式布局）
		JPanel north = new JPanel(new FlowLayout(FlowLayout.LEFT));
		//创建得分标签
		this.lbPoint = new JLabel();
		//将得分标签添加到北部面板
		north.add(lbPoint);
		//创建错误信息控件，设置为红色
		this.errorMsg = new JLabel();
		this.errorMsg.setForeground(Color.RED);
		//创建错误信息添加到北部面板
		north.add(errorMsg);
		//将北部面板添加到主面板
		this.add(north, BorderLayout.NORTH);
//中部面板		
		//创建中部面板（流式布局）
		JPanel center = new JPanel(new FlowLayout(FlowLayout.LEFT));
		//创建名字标签，并添加到中部面板
		center.add(new JLabel("请输入您的名字"));
		//创建名字输入框
		this.txName = new JTextField(10);
		//把名字输入框添加到中部面板
		center.add(this.txName);
		//把中部面板添加到主面板
		this.add(center, BorderLayout.CENTER);
//南部面板		
		//创建确定按钮
		this.btnOk = new JButton("确定");
		//创建南部面部（流式布局）
		JPanel south = new JPanel(new FlowLayout(FlowLayout.CENTER));
		//按钮添加到南部面板
		south.add(btnOk);
		//南部面板添加到主面板
		this.add(south, BorderLayout.SOUTH);
	}
}
